package com.xigege.netty.nettyComponent.byteBuf;

import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import java.nio.charset.Charset;

public class NettyByteBuf02 {
    public static void main(String[] args) {
        //创建ByteBuf
        ByteBuf byteBuf = Unpooled.copiedBuffer("hello,world!", Charset.forName("utf-8"));

        //使用相关的方法
        if (byteBuf.hasArray()){ //这个buffer里面有没有分配一个数组
            byte[] content = byteBuf.array(); //取出这个buffer里的数组

            //将content转换成字符串
            System.out.println(new String(content,Charset.forName("utf-8")));

            //输出byteBuf是什么类型
            System.out.println("ByteBuf = " + byteBuf);

            //数组偏移量 0
            System.out.println(byteBuf.arrayOffset());

            //readerIndex 0
            System.out.println(byteBuf.readerIndex());

            //writerIndex 0
            System.out.println(byteBuf.writerIndex());

            //capacity 36
            System.out.println(byteBuf.capacity());

            //可读的字节数 12，如果读取了一个字节，可读字节会变小
            int len = byteBuf.readableBytes();

            //使用for循环取出各个字节
            for (int i = 0; i < len; i++) {
                System.out.println((char) byteBuf.getByte(i));
            }

            //按照某个范围读取，读取中间的某一段 参数:index,length，字符集
            System.out.println(byteBuf.getCharSequence(0,4,Charset.forName("utf-8")));
            System.out.println(byteBuf.getCharSequence(4,6,Charset.forName("utf-8")));
        }
    }
}
